package cn.koala.key.api;

import cn.koala.key.common.enums.EnumKeyValue;
import cn.koala.key.common.feign.BaseApi;
import cn.koala.key.firstmaintain.entity.dto.FirstMaintainCardBorrowOrderCancelDTO;
import cn.koala.key.firstmaintain.entity.dto.FirstMaintainCardBorrowOrderOutDTO;
import cn.koala.key.firstmaintain.entity.dto.FirstMaintainCardBorrowOrderRefuseDTO;
import cn.koala.key.firstmaintain.entity.dto.FirstMaintainCardBorrowOrderSearchParamVO;
import cn.koala.key.firstmaintain.entity.vo.FirstMaintainCardBorrowOrderDetailVO;
import cn.koala.key.firstmaintain.entity.vo.FirstMaintainCardBorrowOrderFillOrderInfoVO;
import cn.koala.key.firstmaintain.entity.vo.FirstMaintainCardBorrowOrderRefuseVO;
import cn.koala.key.firstmaintain.entity.vo.FirstMaintainCardBorrowOrderSearchResultVO;
import cn.seed.common.core.Result;
import cn.seed.common.core.ResultList;
import feign.Param;
import feign.RequestLine;

import java.util.List;

/**
 * 首保卡借用单api
 *
 * @author liutao
 * @date 2021/1/26
 */
public interface FirstMaintainCardBorrowOrderApi extends BaseApi {


    @RequestLine("PUT /first/card/borrow/out")
    Result<?> borrowOut(FirstMaintainCardBorrowOrderOutDTO borrowOrderOutDTO);

    @RequestLine("PUT /first/card/borrow/confirm/receive?orderNo={orderNo}&oprNo={oprNo}&oprName={oprName}")
    Result<?> confirmReceiveCard(@Param("orderNo") String orderNo, @Param("oprNo") String oprNo,@Param("oprName") String oprName);

    @RequestLine("PUT /first/card/borrow/refuse")
    Result<?> refuse(FirstMaintainCardBorrowOrderRefuseDTO refuseDTO);

    @RequestLine("PUT /first/card/borrow/cancel")
    Result<?> cancel(FirstMaintainCardBorrowOrderCancelDTO cancelDTO);

    @RequestLine("GET /first/card/borrow/detail?orderNo={orderNo}")
    Result<FirstMaintainCardBorrowOrderDetailVO> orderDetail(@Param("orderNo") String orderNo);

    @RequestLine("GET /first/card/borrow/fillOrderInfo?orderNo={orderNo}")
    Result<FirstMaintainCardBorrowOrderFillOrderInfoVO> fillOrderInfo(@Param("orderNo") String orderNo);

    @RequestLine("GET /first/card/borrow/search")
    Result<ResultList<FirstMaintainCardBorrowOrderSearchResultVO>> searchByCondition(FirstMaintainCardBorrowOrderSearchParamVO paramVO);

    @RequestLine("GET /first/card/borrow/status/list")
    Result<List<EnumKeyValue>> listOrderStatus();
    @RequestLine("GET /first/card/borrow/source/list")
    Result<List<EnumKeyValue>> listOrderSource();
}
